home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat2 / standard / comp.z / comp
Encoding:
Text File  |  1998-10-20  |  14.3 KB  |  263 lines

  1.  
  2.  
  3.  
  4. CCCCOOOOMMMMPPPP((((2222))))                                                                CCCCOOOOMMMMPPPP((((2222))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      comp,uncomp,comp_compress,uncomp_uncompress - data stream compression and
  10.      uncompression
  11.  
  12. CCCC SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppp....hhhh>>>>
  14.  
  15.      ttttyyyyppppeeeeddddeeeeffff vvvvooooiiiidddd ****((((****ccccoooommmmpppp____aaaallllllllooooccccaaaattttoooorrrr____tttt))))((((ssssiiiizzzzeeee____tttt))));;;;
  16.  
  17.      ttttyyyyppppeeeeddddeeeeffff vvvvooooiiiidddd ((((****ccccoooommmmpppp____ffffrrrreeeeeeee____tttt))))((((vvvvooooiiiidddd ****))));;;;
  18.  
  19.      ttttyyyyppppeeeeddddeeeeffff ssssssssiiiizzzzeeee____tttt ((((****ccccoooommmmpppp____oooouuuuttttppppuuuutttt____tttt))))((((vvvvooooiiiidddd ****ppppaaaarrrraaaammmm,,,, vvvvooooiiiidddd ****bbbbuuuuffff,,,, ssssiiiizzzzeeee____tttt bbbbuuuufffflllleeeennnn))));;;;
  20.  
  21.      vvvvooooiiiidddd ccccoooommmmpppp____ooooppppttttiiiioooonnnnssss____ddddeeeeffffaaaauuuulllltttt((((CCCCOOOOMMMMPPPP____OOOOPPPPTTTTIIIIOOOONNNNSSSS ****))));;;;
  22.  
  23.      vvvvooooiiiidddd ccccoooommmmpppp____iiiinnnniiiitttt((((CCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****,,,, ccccoooommmmpppp____aaaallllllllooooccccaaaattttoooorrrr____tttt,,,,
  24.                     ccccoooommmmpppp____ffffrrrreeeeeeee____tttt,,,, ccccoooommmmpppp____oooouuuuttttppppuuuutttt____tttt))));;;;
  25.  
  26.      iiiinnnntttt ccccoooommmmpppp____bbbbeeeeggggiiiinnnn((((CCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****,,,, CCCCOOOOMMMMPPPP____OOOOPPPPTTTTIIIIOOOONNNNSSSS ****))));;;;
  27.  
  28.      iiiinnnntttt ccccoooommmmpppp____ccccoooommmmpppprrrreeeessssssss((((CCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****,,,,
  29.                        ccccoooonnnnsssstttt cccchhhhaaaarrrr____ttttyyyyppppeeee ****bbbbuuuuffff,,,, lllloooonnnngggg bbbbuuuufffflllleeeennnn))));;;;
  30.  
  31.      iiiinnnntttt ccccoooommmmpppp____eeeennnndddd((((CCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  32.  
  33.      vvvvooooiiiidddd ccccoooommmmpppp____ddddeeeessssttttrrrrooooyyyy((((CCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  34.  
  35.      iiiinnnntttt ccccoooommmmpppp____ggggeeeetttteeeerrrrrrrrnnnnoooo((((CCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  36.  
  37.      vvvvooooiiiidddd ccccoooommmmpppp____ccccllllrrrreeeerrrrrrrrnnnnoooo((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  38.  
  39.      ####iiiinnnncccclllluuuuddddeeee <<<<uuuunnnnccccoooommmmpppp....hhhh>>>>
  40.  
  41.      ttttyyyyppppeeeeddddeeeeffff vvvvooooiiiidddd ****((((****uuuunnnnccccoooommmmpppp____aaaallllllllooooccccaaaattttoooorrrr____tttt))))((((ssssiiiizzzzeeee____tttt))));;;;
  42.  
  43.      ttttyyyyppppeeeeddddeeeeffff vvvvooooiiiidddd ((((****uuuunnnnccccoooommmmpppp____ffffrrrreeeeeeee____tttt))))((((vvvvooooiiiidddd ****))));;;;
  44.  
  45.      ttttyyyyppppeeeeddddeeeeffff ssssssssiiiizzzzeeee____tttt ((((****uuuunnnnccccoooommmmpppp____oooouuuuttttppppuuuutttt____tttt))))((((vvvvooooiiiidddd ****ppppaaaarrrraaaammmm,,,, vvvvooooiiiidddd ****bbbbuuuuffff,,,, ssssiiiizzzzeeee____tttt bbbbuuuufffflllleeeennnn))));;;;
  46.  
  47.      vvvvooooiiiidddd uuuunnnnccccoooommmmpppp____ooooppppttttiiiioooonnnnssss____ddddeeeeffffaaaauuuulllltttt((((UUUUNNNNCCCCOOOOMMMMPPPP____OOOOPPPPTTTTIIIIOOOONNNNSSSS ****))));;;;
  48.  
  49.      iiiinnnntttt uuuunnnnccccoooommmmpppp____iiiinnnniiiitttt((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****,,,, uuuunnnnccccoooommmmpppp____aaaallllllllooooccccaaaattttoooorrrr____tttt,,,,
  50.                      uuuunnnnccccoooommmmpppp____ffffrrrreeeeeeee____tttt,,,, uuuunnnnccccoooommmmpppp____oooouuuuttttppppuuuutttt____tttt))));;;;
  51.  
  52.      iiiinnnntttt uuuunnnnccccoooommmmpppp____bbbbeeeeggggiiiinnnn((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****,,,, UUUUNNNNCCCCOOOOMMMMPPPP____OOOOPPPPTTTTIIIIOOOONNNNSSSS ****))));;;;
  53.  
  54.      iiiinnnntttt uuuunnnnccccoooommmmpppp____uuuunnnnccccoooommmmpppprrrreeeessssssss((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****,,,,
  55.                            ccccoooonnnnsssstttt cccchhhhaaaarrrr____ttttyyyyppppeeee ****bbbbuuuuffff,,,, lllloooonnnngggg bbbbuuuufffflllleeeennnn))));;;;
  56.  
  57.      iiiinnnntttt uuuunnnnccccoooommmmpppp____eeeennnndddd((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCOOOOMMMMPPPP((((2222))))                                                                CCCCOOOOMMMMPPPP((((2222))))
  71.  
  72.  
  73.  
  74.      vvvvooooiiiidddd uuuunnnnccccoooommmmpppp____ddddeeeessssttttrrrrooooyyyy((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  75.  
  76.      iiiinnnntttt uuuunnnnccccoooommmmpppp____ggggeeeetttteeeerrrrrrrrnnnnoooo((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  77.  
  78.      vvvvooooiiiidddd uuuunnnnccccoooommmmpppp____ccccllllrrrreeeerrrrrrrrnnnnoooo((((UUUUNNNNCCCCOOOOMMMMPPPP____DDDDAAAATTTTAAAA ****))));;;;
  79.  
  80. OOOOVVVVEEEERRRRVVVVIIIIEEEEWWWW
  81.      The _c_o_m_p library and associated system calls allows applications to use
  82.      the compression and decompression algorithms from _c_o_m_p_r_e_s_s(1) and
  83.      _u_n_c_o_m_p_r_e_s_s(1) directly, without having to invoke a separate executable.
  84.  
  85.      The compression code in this library has been optimized, and if used in
  86.      combination with large buffer file reading can result in improved
  87.      compression times of up to 30% over the standard compress code.
  88.  
  89.      You must link with the _cccc_oooo_mmmm_pppp _l_i_b_r_a_r_y:
  90.  
  91.           cc -o prog prog.c -lcomp
  92.  
  93.  
  94. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  95.      Applications wishing to compress data should:
  96.      1    include _c_o_m_p._h header file
  97.  
  98.      2    define an instance of a _C_O_M_P__D_A_T_A stream (let's call it _xxxx_xxxx_xxxx)
  99.  
  100.      3    define memory allocator method: _v_o_i_d *_x_x_x_m_a_l_l_o_c(_s_i_z_e__t)
  101.  
  102.      4    define corresponding memory free method: _v_o_i_d _x_x_x_f_r_e_e(_b_u_f)
  103.  
  104.      5    define output handler method: _s_s_i_z_e__t _x_x_x_o_u_t_p_u_t(_p_a_r_a_m, _o_u_t_b_u_f,
  105.           _o_u_t_b_u_f_l_e_n)
  106.  
  107.      6    define an instance of COMP_OPTIONS options structure: _xxxx_xxxx_xxxx_oooo_pppp_tttt_ssss
  108.  
  109.      7    invoke _c_o_m_p__o_p_t_i_o_n_s__d_e_f_a_u_l_t(&_x_x_x_o_p_t_s) to set default options
  110.  
  111.      8    invoke _c_o_m_p__i_n_i_t(&_x_x_x, &_x_x_x_m_a_l_l_o_c, &_x_x_x_f_r_e_e, &_x_x_x_o_u_t_p_u_t)
  112.  
  113.      9    explicitly set any non-default options desired in _xxxx_xxxx_xxxx_oooo_pppp_tttt_ssss,
  114.           especially _xxxx_xxxx_xxxx_oooo_pppp_tttt_ssss_...._oooo_uuuu_tttt_pppp_uuuu_tttt______pppp_aaaa_rrrr_aaaa_mmmm, which is passed to _x_x_x_o_u_t_p_u_t()
  115.  
  116.      10   invoke _c_o_m_p__b_e_g_i_n(&_x_x_x, &_x_x_x_o_p_t_s)
  117.  
  118.      11   invoke _c_o_m_p__c_o_m_p_r_e_s_s(&_x_x_x, _i_n_b_u_f, _i_n_b_u_f_l_e_n)
  119.  
  120.      12   invoke _c_o_m_p__e_n_d(&_x_x_x)
  121.  
  122.  
  123.  
  124.  
  125.  
  126.                                                                         PPPPaaaaggggeeee 2222
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133. CCCCOOOOMMMMPPPP((((2222))))                                                                CCCCOOOOMMMMPPPP((((2222))))
  134.  
  135.  
  136.  
  137.      13   repeat steps (9) through (12) as necessary, for each file to be
  138.           compressed.
  139.  
  140.      14   it is okay to reuse compress structs for other compressed streams,
  141.           by invoking _c_o_m_p__b_e_g_i_n() on them again.
  142.  
  143.      15   invoke _c_o_m_p__d_e_s_t_r_o_y(&_x_x_x) to free up allocated memory
  144.  
  145.      Expect during above:
  146.  
  147.      1    calls to _x_x_x_m_a_l_l_o_c() during _c_o_m_p__b_e_g_i_n() for space that the
  148.           compressor might need
  149.  
  150.      2    calls to _x_x_x_o_u_t_p_u_t() during _c_o_m_p__c_o_m_p_r_e_s_s() and _c_o_m_p__e_n_d(), to emit
  151.           compressed results.
  152.  
  153.      3    calls to _x_x_x_f_r_e_e() during _c_o_m_p__d_e_s_t_r_o_y() and _c_o_m_p__b_e_g_i_n().
  154.  
  155.      To uncompress data:
  156.      1    include _u_n_c_o_m_p._h header file
  157.  
  158.      2    define an instance of a _U_N_C_O_M_P__D_A_T_A stream (let's call it _xxxx_xxxx_xxxx)
  159.  
  160.      3    define memory allocator method: _v_o_i_d *_x_x_x_m_a_l_l_o_c(_s_i_z_e__t)
  161.  
  162.      4    define corresponding memory free method: _v_o_i_d _x_x_x_f_r_e_e(_b_u_f)
  163.  
  164.      5    define output handler method: _s_s_i_z_e__t _x_x_x_o_u_t_p_u_t(_p_a_r_a_m, _o_u_t_b_u_f,
  165.           _o_u_t_b_u_f_l_e_n)
  166.  
  167.      6    define an instance of UNCOMP_OPTIONS options structure: _xxxx_xxxx_xxxx_oooo_pppp_tttt_ssss
  168.  
  169.      7    invoke _u_n_c_o_m_p__o_p_t_i_o_n_s__d_e_f_a_u_l_t(&_x_x_x_o_p_t_s) to set default options
  170.  
  171.      8    invoke _u_n_c_o_m_p__i_n_i_t(&_x_x_x, &_x_x_x_m_a_l_l_o_c, &_x_x_x_f_r_e_e, &_x_x_x_o_u_t_p_u_t)
  172.  
  173.      9    explicitly set any non-default options desired in _xxxx_xxxx_xxxx_oooo_pppp_tttt_ssss,
  174.           especially _xxxx_xxxx_xxxx_oooo_pppp_tttt_ssss_...._oooo_uuuu_tttt_pppp_uuuu_tttt______pppp_aaaa_rrrr_aaaa_mmmm, which is passed to _x_x_x_o_u_t_p_u_t()
  175.  
  176.      10   invoke _u_n_c_o_m_p__b_e_g_i_n(&_x_x_x, &_x_x_x_o_p_t_s)
  177.  
  178.      11   invoke _u_n_c_o_m_p__u_n_c_o_m_p_r_e_s_s(&_x_x_x, _i_n_b_u_f, _i_n_b_u_f_l_e_n)
  179.  
  180.      12   invoke _u_n_c_o_m_p__e_n_d(&_x_x_x)
  181.  
  182.      13   repeat steps (9) through (12) as necessary, for each file to be
  183.           compressed.
  184.  
  185.  
  186.  
  187.  
  188.  
  189.                                                                         PPPPaaaaggggeeee 3333
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196. CCCCOOOOMMMMPPPP((((2222))))                                                                CCCCOOOOMMMMPPPP((((2222))))
  197.  
  198.  
  199.  
  200.      14   it is okay to reuse uncompress structs for other compressed streams,
  201.           by invoking _u_n_c_o_m_p__b_e_g_i_n() on them again.
  202.  
  203.      15   invoke _u_n_c_o_m_p__d_e_s_t_r_o_y(&_x_x_x) to free up allocated memory
  204.  
  205.      Expect during above:
  206.  
  207.      1    calls to _x_x_x_m_a_l_l_o_c() during _u_n_c_o_m_p__i_n_i_t() for space that the
  208.           uncompressor might need
  209.  
  210.      2    calls to _x_x_x_o_u_t_p_u_t() during _u_n_c_o_m_p__u_n_c_o_m_p_r_e_s_s() and _u_n_c_o_m_p__e_n_d(), to
  211.           emit uncompressed results.
  212.  
  213.      3    calls to _x_x_x_f_r_e_e() during _u_n_c_o_m_p__d_e_s_t_r_o_y() and _u_n_c_o_m_p__b_e_g_i_n()..
  214.  
  215. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  216.      compress(1), uncompress(1)
  217.  
  218. DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
  219.      All routines that return a status value return 0 for success, -1 for
  220.      failure.  _c_o_m_p__e_n_d and _u_n_c_o_m_p__e_n_d can also return -2 if no gain was had
  221.      by compressing the stream.
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.                                                                         PPPPaaaaggggeeee 4444
  256.  
  257.  
  258.  
  259.